package com.mysoft.gfyx.marketdevelop.mip;

import com.mingyuanyun.sdk.mip.annotation.MipAuth;
import com.mingyuanyun.sdk.mip.client.IHttpApi;
import com.mingyuanyun.sdk.mip.enm.MipAuthType;
import com.mysoft.gfyx.marketdevelop.controller.dto.inspect.ChartRequestDto;
import com.mysoft.gfyx.marketdevelop.mip.dto.*;
import com.mysoft.gfyx.marketdevelop.mip.dto.TjCustom.*;
import com.mysoft.gfyx.marketdevelop.mip.dto.TjMetric.GetMetricListResponseDto;
import com.mysoft.gfyx.marketdevelop.mip.dto.TjMetric.QueryMetricRequestDto;
import com.mysoft.gfyx.marketdevelop.mip.dto.TjMetric.QueryMetricResponseDto;
import com.mysoft.gfyx.marketdevelop.mip.dto.TjTag.GetAllTagResponseDto;
import com.mysoft.gfyx.marketdevelop.mip.dto.TjTag.GetTagClassListResponseDto;
import feign.Headers;
import feign.Param;
import feign.RequestLine;

@MipAuth(MipAuthType.OAUTH2)
public interface GetDeveloperDataService extends IHttpApi {
    @RequestLine("GET /opensearch/developer/list?keyword={keyword}&province={province}&city={city}&company_type={company_type}&project_type={project_type}&land_type={land_type}" +
            "&developer_activity_label={developer_activity_label}&developer_top_100_label={developer_top_100_label}&is_new_decorate_expand_label={is_new_decorate_expand_label}" +
            "&is_new_land_usage_expand_label={is_new_land_usage_expand_label}&is_new_area_expand_label={is_new_area_expand_label}&high_project_customers_label={high_project_customers_label}" +
            "&is_ycg_certification={is_ycg_certification}&is_ycg_offline_business_connect={is_ycg_offline_business_connect}&industry_category_middle={industry_category_middle}&page={page}&page_size={pageSize}")
    @Headers("Content-Type: application/json")
    BasicOpensearchResponse searchDeveloper(
            @Param("keyword") String keyword,
            @Param("province") String province,
            @Param("city") String city,
            @Param("company_type") String company_type,
            @Param("project_type") String project_type,
            @Param("land_type") String land_type,
            @Param("developer_activity_label") String developer_activity_label,
            @Param("developer_top_100_label") String developer_top_100_label,
            @Param("is_new_decorate_expand_label") String is_new_decorate_expand_label,
            @Param("is_new_land_usage_expand_label") String is_new_land_usage_expand_label,
            @Param("is_new_area_expand_label") String is_new_area_expand_label,
            @Param("high_project_customers_label") String high_project_customers_label,
            @Param("is_ycg_certification") String is_ycg_certification,
            @Param("is_ycg_offline_business_connect") String is_ycg_offline_business_connect,
            @Param("industry_category_middle") String industry_category_middle,
            @Param("page") int page,
            @Param("pageSize") int pageSize
    );

    @RequestLine("GET /opensearch/commence-permit/list?keyword={keyword}&province={province}&city={city}&company_type={company_type}" +
            "&area_lower={area_lower}&area_upper={area_upper}&price_lower={price_lower}&price_upper={price_upper}" +
            "&begin_lower={begin_lower}&begin_upper={begin_upper}&finish_lower={finish_lower}&finish_upper={finish_upper}" +
            "&page={page}&page_size={pageSize}")
    @Headers("Content-Type: application/json")
    BasicOpensearchResponse searchCommencePermit(
            @Param("keyword") String keyword,
            @Param("province") String province,
            @Param("city") String city,
            @Param("company_type") String company_type,
            @Param("area_lower") String area_lower,
            @Param("area_upper") String area_upper,
            @Param("price_lower") String price_lower,
            @Param("price_upper") String price_upper,
            @Param("begin_lower") String begin_lower,
            @Param("begin_upper") String begin_upper,
            @Param("finish_lower") String finish_lower,
            @Param("finish_upper") String finish_upper,
            @Param("page") int page,
            @Param("pageSize") int pageSize
    );

    @RequestLine("GET /opensearch/enterprise/name?keyword={keyword}")
    @Headers("Content-Type: application/json")
    BasicYcgListWithoutTotalResponseDto searchEnterpriseName(
            @Param("keyword") String keyword);

    @RequestLine("GET /opensearch/oppotunity/name?keyword={keyword}")
    @Headers("Content-Type: application/json")
    BasicYcgListWithoutTotalResponseDto searchOpportunityName(
            @Param("keyword") String keyword);

    @RequestLine("GET /opensearch/taken-land/name?keyword={keyword}")
    @Headers("Content-Type: application/json")
    BasicYcgListWithoutTotalResponseDto searchLandName(
            @Param("keyword") String keyword);

    @RequestLine("GET /opensearch/commence-permit/name?keyword={keyword}")
    @Headers("Content-Type: application/json")
    BasicYcgListWithoutTotalResponseDto searchCommencePermitName(
            @Param("keyword") String keyword);

    @RequestLine("GET /opensearch/project/name?keyword={keyword}")
    @Headers("Content-Type: application/json")
    BasicYcgListWithoutTotalResponseDto searchProjectName(
            @Param("keyword") String keyword);

    @RequestLine("GET /opensearch/win-bid/name?keyword={keyword}")
    @Headers("Content-Type: application/json")
    BasicYcgListWithoutTotalResponseDto searchWinBidName(
            @Param("keyword") String keyword);

    @RequestLine("GET /opensearch/purchase/get-detail?id={id}")
    @Headers("Content-Type: application/json")
    BasicYcgObjectResponseDto searchOpportunityDetail(
            @Param("id") String id);


    @RequestLine("GET /tag/class/list?project={project}&entity_id={entity_id}")
    @Headers("Content-Type: application/json")
    GetTagClassListResponseDto getTagClassList(@Param("project") String project, @Param("entity_id") String entity_id);

    @RequestLine("GET /tag/list?project={project}&entity_id={entity_id}")
    @Headers("Content-Type: application/json")
    GetAllTagResponseDto getAllTagsAndValues(@Param("project") String project, @Param("entity_id") String entity_id);

    @RequestLine("POST /open-api/tag/archive-data/supplier/detail")
    @Headers("Content-Type: application/json")
    BaseTjListResponseDto getDeveloperDetailData(GetDeveloperFilterDataRequestDto dto);

    @RequestLine("POST /open-api/tag/archive-data/detail-table/list")
    @Headers("Content-Type: application/json")
    BaseTjListResponseDto getFilteredDeveloperDetailList(GetDeveloperFilterDataRequestDto dto);

    @RequestLine("GET /open-api/metric/metric/list?project_code={project_code}&class_id={class_id}")
    @Headers("Content-Type: application/json")
    GetMetricListResponseDto getMetricList(
            @Param("project_code") String project_code,
            @Param("class_id") String class_id);

    @RequestLine("POST /open-api/metric/query")
    @Headers("Content-Type: application/json")
    QueryMetricResponseDto queryMetric(QueryMetricRequestDto dto);

    @RequestLine("POST /open-api/tag/archive-data/supplier/list")
    @Headers("Content-Type: application/json")
        //高级筛选-找客户获取客户列表（开发商）的接口
    BaseTjListResponseDto getDeveloperMainAndDetailData(GetDeveloperFilterDataRequestDto dto);

    @RequestLine("POST /open-api/custom/developer/feed")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto getDeveloperFeeds(GetDeveloperFeedsRequestDto dto);

    @RequestLine("POST /open-api/custom/taken-land-top10")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto getTakenLandTop10(GetTakenLandTop10RequestDto dto);

    @RequestLine("POST /open-api/custom/project-top10")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto getProjectTop10(GetProjectTop10RequestDto dto);

    @RequestLine("POST /open-api/custom/building-project-rank10")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto getBuildingProjectTop10(ChartRequestDto dto);

    @RequestLine("POST /open-api/custom/inspect-developer-list")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto getDeveloperList(DeveloperListRequestDto dto);

    @RequestLine("POST /open-api/custom/developer-type-pie")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto getDeveloperTypePie(ChartRequestDto dto);

    @RequestLine("POST /open-api/custom/land-pie")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto getLandPie(ChartRequestDto dto);

    @RequestLine("POST /open-api/custom/sale-project-pie")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto getSaleProjectPie(ChartRequestDto dto);

    @RequestLine("POST /open-api/custom/taken-land-bar")
    @Headers("Content-Type: application/json")
    SqlApiListResponseDto getTakenLandBar(TakenLandBarRequestDto dto);

    @RequestLine("POST /open-api/custom/sale-project-bar")
    @Headers("Content-Type: application/json")
    SqlApiListResponseDto getSaleProjectBar(ProjectBarRequestDto dto);

    @RequestLine("POST /open-api/custom/building-project-bar")
    @Headers("Content-Type: application/json")
    SqlApiListResponseDto getBuildingProjectBar(ChartRequestDto dto);

    @RequestLine("POST /open-api/custom/building-project-month-bar")
    @Headers("Content-Type: application/json")
    SqlApiListResponseDto getBuildingProjectMonthBar(ChartRequestDto dto);

    @RequestLine("POST /open-api/sentry/use-num-rank")
    @Headers("Content-Type: application/json")
    SqlApiListResponseDto getUseNumRank(TenantRankRequestDto dto);

    @RequestLine("POST /open-api/sentry/customer-num-rank")
    @Headers("Content-Type: application/json")
    SqlApiListResponseDto getCustomerNumRank(TenantRankRequestDto dto);

    @RequestLine("POST /open-api/sentry/clu-num-rank")
    @Headers("Content-Type: application/json")
    SqlApiListResponseDto getCluNumRank(TenantRankRequestDto dto);

    @RequestLine("POST /open-api/custom/trading-center-detail")
    @Headers("Content-Type: application/json")
    SqlApiListResponseDto getTradingCenterDetail(UidRequestDto dto);

    @RequestLine("POST /open-api/puchase/get-contact")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto getContactList(GetContactListRequestDto dto);

    @RequestLine("POST /open-api/custom/developer/all-tags")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto getDevelopersAllTags(GetDevelopersAllTagsRequestDto dto);

    @RequestLine("POST /open-api/custom/radar/developer_contacts")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto getDeveloperContacts(GetDeveloperContactsRequestDto dto);

    @RequestLine("POST /open-api/custom/developer/related_contacts")
    @Headers("Content-Type: application/json")
    SqlApiListResponseDto getDeveloperRelatedContacts(GetDeveloperContactsRequestDto dto);

    @RequestLine("POST /open-api/custom/supplier/related_contacts")
    @Headers("Content-Type: application/json")
    SqlApiListResponseDto getSupplierRelatedContacts(GetDeveloperContactsRequestDto dto);

    @RequestLine("POST /v1/company/zx-list")
    @Headers("Content-Type: application/json")
    BasicYcgListReponseDto getEnforcementData(BasicRiskRequestDto dto);

    @RequestLine("POST /v1/company/court-register")
    @Headers("Content-Type: application/json")
    BasicYcgListReponseDto getCaseRegistrationData(BasicRiskRequestDto dto);

    @RequestLine("POST /v1/company/law-suit")
    @Headers("Content-Type: application/json")
    BasicYcgListReponseDto getLawsuitData(BasicRiskRequestDto dto);

    @RequestLine("POST /v1/company/tax-illegal-list")
    @Headers("Content-Type: application/json")
    BasicYcgListReponseDto getTaxRiskData(BasicRiskRequestDto dto);

    @RequestLine("POST /v1/company/get-certificate")
    @Headers("Content-Type: application/json")
    BasicOpensearchResponse getCertificate(BasicYcgOpenApiRequestDto dto);

    @RequestLine("POST /v1/company/get-tab-statistics")
    @Headers("Content-Type: application/json")
    BasicOpensearchResponse getRiskTabStatistics(RiskTabRequestDto dto);

    @RequestLine("POST /v1/company/get-invest-not-tree")
    @Headers("Content-Type: application/json")
    BasicYcgListWithoutTotalResponseDto getInvestment(GetInvestmentRequestDto dto);

    @RequestLine("POST /open-api/mohurd-project/list")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto mohurdProjectList(MohurdProjectListRequestDto dto);

    @RequestLine("POST /open-api/custom/project_list/developer_equity")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto projectListByDeveloper(ProjectListByDeveloperRequestDto dto);

    @RequestLine("POST /open-api/custom/land/tag-list")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto landTagList(LandTagListRequestDto dto);

    @RequestLine("POST /open-api/custom/tag/industry")
    @Headers("Content-Type: application/json")
    SqlApiResponseDto industryTagList(LandTagListRequestDto dto);
}